[t:/]$ 지식_

initramfs, linux boot

2012/01/15

rdinit=/bin/sh 를 하니까.. initramfs 로 부팅 됐다..

initrd
– 메인 하드 드라이버 (예:scsi) 등의 모듈을 가져오려면 뭐라도 fs 가 있어야 하므로 ramdisk 이미지를 하나 쓴다.
– 진짜 rfs 를 붙이기 전에 씀

noinitrd
– 쓰고 나서 안 버림

/linuxrc
– mount -n 명령등으로 /etc/mtab 건들지 말고 저장해둔 (/mnt/etc 등) 진짜 etc를 ramfs로 새로 마운팅한 /etc에 복사하는 일을 해야 함
– cramfs, squashfs 등 ro 에서 사용해야 함.

exec /sbin/init
– init 를 커널이 실행 하는 대신 /linuxrc가 사용하도록 함

ramfs
– ramdisk는 블럭 io의 한계를 모두 가지나 ramfs는 캐쉬 그 자체

tmpfs
– ramfs에 옵션 추가 가능

initramfs
– initrd 대신 cpio 형식의 rfs를 커널에 붙여씀.. 용량 안 정해놔도 됨..

기존 램디스크를 initramfs 로 전환하자

램디스크를 loopback 으로 마운팅 시킨 다음..

http://jootamam.net/howto-initramfs-image.htm

cd initramfs
$ find . | cpio -H newc -o > ../initramfs.cpio
$ cd ..
$ cat initramfs.cpio | gzip > initramfs.igz

커널 셋업에서 저 파일 지정해주고.. 빌드하면 커널에 initramfs 가 붙는다..

커널 파라미터에 rdinit=/sbin/init 로 init를 지정해준다.. cramfs나 squashfs 를 컨버전 했다면 linuxrc를 지정하면 될 것이다.
2회 리마운팅은 좀 불합리하다.. initramfs 로 가자.

노노 cpio 파일을 직접 지정해라..





공유하기













[t:/] is not "technology - root". dawnsea, rss